﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OWLServer.owl.tipos
{
    /// <summary>
    /// Clase que representa un elemento restringido.
    /// </summary>
    public class ElementoRestringido : Elemento
    {
        private IList<RestriccionPropiedadObjeto> restriccionesPropiedadObjeto;
        private IList<RestriccionPropiedadDato> restriccionesPropiedadDato;

        /// <summary>
        /// Restricciones relacionadeas con una propiedad de objeto
        /// </summary>
        public virtual IList<RestriccionPropiedadObjeto> RestriccionesPropiedadObjeto
        {
            get { return restriccionesPropiedadObjeto; }
            set { restriccionesPropiedadObjeto = value; }
        }

        /// <summary>
        /// Restricciones relacionadeas con una propiedad de dato
        /// </summary>
        public virtual IList<RestriccionPropiedadDato> RestriccionesPropiedadDato
        {
            get { return restriccionesPropiedadDato; }
            set { restriccionesPropiedadDato = value; }
        }


        public ElementoRestringido() { }

        public ElementoRestringido(string id)
            : base(id)
        {
            inicializarListas();
        }

        public ElementoRestringido(Elemento elemento)
            : base(elemento)
        {
            inicializarListas();
        }

        public ElementoRestringido(string id, EspacioNombres espacioNombres)
            : base(id, espacioNombres)
        {
            inicializarListas();
        }

        /// <summary>
        /// Inicializa las listas de elementos
        /// </summary>
        private void inicializarListas(){
            RestriccionesPropiedadDato = new List<RestriccionPropiedadDato>();
            RestriccionesPropiedadObjeto = new List<RestriccionPropiedadObjeto>();
        }
    }
}
